/**
 * 解析 URL 参数为对象
 * 正则表达式
 * 学习正则的基本用法
 * /([^?&=]+)=([^?&=]*)/g
 * /表达式/匹配规则
 */
function parseParams(url) {
  const reg = /([^?&=]+)=([^?&=]*)/g;
  return url.match(reg).reduce((res, param) => {
    let [key, value] = param.split('=');
    value = decodeURIComponent(value); // 解码
    value = /^\d+$/.test(value) ? Number(value) : value; //转成数字
    if (res.hasOwnProperty(key)) {
      // 属性已经有值
      res[key] = [].concat(res[key],value);
    } else {
      res[key] = value;
    }
    return res;
  }, {});
}
// let url = 'http:// w.com/index.html?name=haha&age=18&six=man&six=man&six=man';
// console.log(parseParams(url)); {name: haha, age: 18, six: [man, man, man]}
function parseParams(url) {
  const params = new URLSearchParams(url.split('?')[1])
  const obj = {};
  params.forEach((value, key)=>obj[key]=value)
  return obj
}
/**
 * /([^?&=]+)=([^?&=]*)/g
 *? ()捕获组 ()=()
 *? []字符组：[^]否定字符组 
 * [^?&=] 不包含 ?、& 或 = 的字符
 * +至少出现一次： []+至少出现一个字符
 * /*零个或多个：  []*零个或多个字符
 * http:// w.com/index.html?name=haha&age=18&six=man&name=xixi&name=kiki
 *! url.match(reg) 返回匹配结果数组
 * ['name=haha', 'age=18', 'six=man'...]
 * 
 * /^\d+$/ ^开头 $结尾 \d+是出现一个或多个的数字（连续）
 *! reg.test(value) 测试是否匹配 true|false
 */